Current network file servers export file systems to many clients. These file systems are limited in availability in that, when a node serving the file system goes down, no new requests are serviced until the node comes back up and begins to serve the file system again. In one possible approach for providing a highly available network file system, two nodes each serve different file systems. If one node goes down, then the other node assumes the export of the failed node's file system(s). However, a client must be configured to mount the same file system through multiple nodes. This is referred to as “multiple mount points.” In this way, a client must be configured to know when a node goes down in order to attempt accessing the same data through another mount point (i.e., the other node).
In addition, nodes can easily get overloaded processing I/O from clients. Since I/O may take over the system, using all available network and storage bandwidth, other clients may find themselves starved for I/O, waiting for small windows of time to get the information they need back from the network file server.
The approaches described in this section are approaches that could be pursued, but not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated, it should not be assumed that any of the approaches described in this section qualify as prior art merely by virtue of their inclusion in this section.